import axios from 'axios'
import { getToken } from '@/utils/auth'
import router from '@/router'
import { Notification, MessageBox, Message } from 'element-ui'
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
const request = axios.create({
    baseURL: "http://localhost:7777",
    timeout: 10000
})

request.interceptors.request.use(config => {
    // 是否需要设置 token
    const isToken = config.headers.isToken
    if (getToken() && isToken) {
        config.headers['token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
            // console.log(getToken())
    }
    return config
}, error => {
    console.log(error)
    Promise.reject(error)
})

request.interceptors.response.use(res => {
        // 未设置状态码则默认成功状态
        const code = res.data.code || 200
            // 获取错误信息
        const msg = res.data.msg || ''
            // console.log("请求响应：", res.data)
        if (code === 401) {
            MessageBox.confirm('登录状态已过期，您可以继续留在该页面，或者重新登录', '系统提示', {
                confirmButtonText: '重新登录',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(() => {
                //记录跳转登录界面前的页面路由地址
                localStorage.setItem('logUrl', router.currentRoute.fullPath);
                router.push({
                    path: '/login'
                });

            }).catch(() => {})
            return Promise.reject('无效的会话，或者会话已过期，请重新登录。')
        } else if (code === 500) {
            Message({
                message: msg,
                type: 'error'
            })
            return Promise.reject(new Error(msg))
        } else if (code !== 200) {
            Notification.error({
                title: msg
            })
            return Promise.reject('error')
        } else {
            // 把字符串total 转换成 数字 total
            if (res.data.data && res.data.data.total) {
                res.data.data.total = parseInt(res.data.data.total)
            }
            return res.data.data
        }
    },
    error => {
        console.log('err' + error)
        let { message } = error
        if (message === 'Network Error') {
            message = '后端接口连接异常'
        } else if (message.includes('timeout')) {
            message = '系统接口请求超时'
        } else if (message.includes('Request failed with status code')) {
            message = '系统接口' + message.substr(message.length - 3) + '异常'
        }
        console.log(message)
        Message({
            message: message,
            type: 'error',
            duration: 5 * 1000
        })
        return Promise.reject(error)
    })
export default request